package com.hcf.admin.common.biz.user;

import com.alibaba.ttl.TransmittableThreadLocal;

import java.util.Optional;

public class UserContext {

    private static final ThreadLocal<UserInfo> userContext = new TransmittableThreadLocal<>();


    /**
     * 获取上下文中用户ID
     * @return 用户ID
     */
    public static String getUserId(){
        UserInfo userInfo = userContext.get();
        return Optional.ofNullable(userInfo).map(UserInfo::getId).orElse(null);
    }

    /**
     * 获取上下文中用户名称
     * @return 用户名称
     */
    public static String getUsername(){
        UserInfo userInfo = userContext.get();
        return Optional.ofNullable(userInfo).map(UserInfo::getUsername).orElse(null);
    }

    /**
     * 获取上下文中用户真实姓名
     * @return 用户真实姓名
     */
    public static String getRealName(){
        UserInfo userInfo = userContext.get();
        return Optional.ofNullable(userInfo).map(UserInfo::getRealName).orElse(null);
    }


    /**
     * 设置用户上下文
     * @param userInfo
     */
    public static void set(UserInfo userInfo){
        userContext.set(userInfo);
    }


    /**
     * 清理用户上下文
     */
    public static void remove(){
        userContext.remove();
    }
}
